package bo.zhao.action.bridge.practice1;

import bo.zhao.action.bridge.practice1.enchantment.FlyingEnchantment;
import bo.zhao.action.bridge.practice1.enchantment.SoulEatingEnchantment;
import bo.zhao.action.bridge.practice1.weapon.Hammer;
import bo.zhao.action.bridge.practice1.weapon.Sword;

/**
 * @author Bo.Zhao
 * @since 19/5/17
 */
public class Game {

    public static void main(String[] args) {
    	
    	/*
    	 * 把武器和魔法解耦，武器与魔法之间实现任意组合
    	 * 进一步理解：武器和魔法其实并非一定是一对一组合，一个武器可以被赋予多种魔法，可以一起使用，或单独使用等等。
    	 * */
    	
        System.out.println("The knight receives an enchanted sword.");
        Sword sword = new Sword(new SoulEatingEnchantment());
        sword.wield();
        sword.swing();
        sword.unwield();

        System.out.println("The valkyrie receives an enchanted hammer.");
        Hammer hammer = new Hammer(new FlyingEnchantment());
        hammer.wield();
        hammer.swing();
        hammer.unwield();
    }
}
